package com.yf.stat.modules.exam.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yf.stat.modules.exam.dto.*;
import com.yf.stat.modules.exam.dto.request.StatExamReqDTO;
import com.yf.stat.modules.exam.dto.request.StatQuReqDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* <p>
* 考试总体统计Mapper
* </p>
*
* @author 聪明笨狗
* @since 2020-09-11 11:10
*/
@Mapper
public interface StatExamMapper {


    /**
     * 查找总体统计
     * @param examId
     * @return
     */
    StatExamTotalDTO findOverview(@Param("examId") String examId, @Param("openType") Integer openType);

    /**
     * 查找根据部门的统计列标配
     * @param examId
     * @return
     */
    List<StatExamTotalDTO> statByDepart(@Param("examId") String examId, @Param("openType") Integer openType);


    /**
     * 分页统计总览
     * @param page
     * @param query
     * @param openType
     * @return
     */
    IPage<StatExamUserDTO> userPaging(Page page, @Param("query") StatExamReqDTO query,
                                      @Param("openType") Integer openType);

    /**
     * 错题统计响应类
     * @param page
     * @param query
     * @return
     */
    IPage<StatErrorQuDTO> errorQuPaging(Page page, @Param("query") StatQuReqDTO query);

    /**
     * 查找最新5条考试信息
     * @return
     */
    List<StatExamDashDTO> dashExamList();

    /**
     * 分析所有的学生成绩
     * @param query
     */
    String studentAI(@Param("query") StatStudentExamAnalyseDTO query);

    /**
     * 获取用户id
     * @param query
     * @return
     */
    List<StatUserListDTO> findUserByDep(@Param("query") StatStudentExamAnalyseDTO query);

    /**
     * 插入记录
     * @param statStudentExamAnalyseDTO
     */
    void saveInfoByClass(@Param("query") StatStudentExamAnalyseDTO statStudentExamAnalyseDTO);

    /**
     * 查找记录
     * @param statStudentExamAnalyseDTO
     * @return
     */
    StatClassTextInfoDTO findByText(@Param("query") StatStudentExamAnalyseDTO statStudentExamAnalyseDTO);

    /**
     * 更改值
     * @param statStudentExamAnalyseDTO
     */
    void updateClassInfo(@Param("query") StatClassTextInfoDTO statStudentExamAnalyseDTO);
}
